// 方法重载
public class overload {
    public static void main(String[] args) {
        Hello hello = new Hello();
        hello.hello();
        hello.hello("张三");
        hello.hello("张三", 17);

        /*
         * 举个例子，String类提供了多个重载方法indexOf()，可以查找子串
         * int indexOf(int ch)：根据字符的Unicode码查找；
         * int indexOf(String str)：根据字符串查找；
         * int indexOf(int ch, int fromIndex)：根据字符查找，但指定起始位置；
         * int indexOf(String str, int fromIndex)根据字符串查找，但指定起始位置。
         * */
        String text = "Test string";
        System.out.println(text.indexOf(0)); // 根据字符的Unicode码查找
        System.out.println(text.indexOf("s")); // 根据字符串查找
        System.out.println(text.indexOf(3, 3)); // 根据字符查找，但指定起始位置
        System.out.println(text.indexOf("s", 3)); // 根据字符串查找，但指定起始位置

        /*
         * 练习
         * 给Person增加重载方法setName(String, String)：
         * */
        Person ming = new Person();
        Person hong = new Person();
        ming.setName("Xiao Ming");
        // TODO: 给Person增加重载方法setName(String, String):
        hong.setName("Xiao", "Hong");
        System.out.println(ming.getName());
        System.out.println(hong.getName());
    }

    static class Hello {
        public void hello() {
            System.out.println("Hello, world!");
        }

        public void hello(String name) {
            System.out.println("Hello, " + name + "!");
        }

        public void hello(String name, int age) {
            if (age < 18) {
                System.out.println("Hi, " + name + "!");
            } else {
                System.out.println("Hello, " + name + "!");
            }
        }
    }

    static class Person {
        private String name;

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public void setName(String surname, String name) {
            this.name = surname + " " + name;
        }
    }

}
